package com.zsrt.java.day20161227.hb.demo06;

import java.util.Arrays;
import java.util.Scanner;

import org.junit.Test;

public class Demo06 {
	
	@Test
	
	/**
	 * 已知：一个空的String数组
	 * 要求：实现对这个数组的增删改查
	 * 分析：可以构造增删改查四个方法 然后进行调用即可
	 */

	
	public void zsgc(){
		
		String array[];
		array=new String[0];
		 
		do{
			
			Scanner sc=new Scanner(System.in);
			System.out.println("请输入快捷键(1增加2删除3改动4查找#结束程序)：");
			String js=sc.next();
			if(js.equals("#")){
				
				System.out.println("程序已结束!");
				break;
				
			}
			
			switch (js) {
			case "1":System.out.println("请输入要增加的名字：");
				   String str01=sc.next();
				   array=zj(array,str01);	
			       System.out.println(Arrays.toString(array)); break;
				   
			case "2":System.out.println("请输入要删除的名字：");
				   String str02=sc.next();
				   array=del(array,str02);			           
				   System.out.println(Arrays.toString(array)); break;
				   
			case "3":System.out.println("请输入要改动的名字：");
				     String str03=sc.next();
				     int index1=quary(array,str03);
				     if(index1==-1){
				    	 
				    	 System.out.println("不存在该名字！");
				    	 break;
				    	 
				     }
				     System.out.println("请输入改动后的名字：");
				     String str04=sc.next();
				     array=gd(array,str03,str04);		           
				     System.out.println(Arrays.toString(array)); break;
				   
			case "4":System.out.println("请输入要查找的名字：");
				   String str05=sc.next();
				   int index=quary(array,str05);
				   System.out.println("第"+(index+1)+"个");     break;
				   
			default:System.out.println("输入有误!");             break;
			}
			
		}while(true);
		 
	}
	
	/**
	 * 构造一个增加String数组元素的方法
	 */
	
	public static String[] zj(String[] array,String str){
		
		String newarray[];
		newarray=new String[array.length+1];
		for(int index=0;index<array.length;index++){
			
			newarray[index]=array[index];
			
		}
		newarray[array.length]=str;
		return newarray;
		 
	}
	
	/**
	 * 构造一个删除String数组元素的方法
	 */
	
	public static String[] del(String[] array,String str){
		
		String newarray[];
		newarray=new String[array.length-1];
		int index=quary(array,str);
		for(int i=0;i<index;i++){
			
			newarray[i]=array[i];
		}
		for(int i=index;i<newarray.length;i++){
			
			newarray[i]=array[i+1];
			
		}
		return newarray;
	 
	}
	
	/**
	 * 构造一个改动String数组元素的方法
	 * 参数有被改数组  被改元素 改动后的元素
	 */
	
	public static String[] gd(String[] array,String str,String gdstr){
		
		int index=quary(array,str);
		array[index]=gdstr;
		return array;
		 
	}
	
	
	/**
	 * 构造一个查找String数组元素的方法
	 */
	
	public static int quary(String[] array,String str){
		
		for(int index=0;index<array.length;index++){
			
			if(array[index].equals(str)){
				
				return index;
				 
			} 
			
		}
		return -1;
		 
	}
  
}
